/* c01/ejemplo-04.c
Modos de video en SDL
*/
#include <SDL/SDL.h>
#define ANCHO 400
#define ALTO 400
char *nombreBotones[] = {"izquierdo", "medio", "derecho", "rueda arriba", "rueda abajo"};

char *nombreBoton(Uint8 boton){
	switch(boton){
		case SDL_BUTTON_LEFT:
			return nombreBotones[0];
		case SDL_BUTTON_MIDDLE:
			return nombreBotones[1];
		case SDL_BUTTON_RIGHT:
			return nombreBotones[2];
		case SDL_BUTTON_WHEELUP:
			return nombreBotones[3];
		case SDL_BUTTON_WHEELDOWN:
			return nombreBotones[4];
	}
}

int main(void){
	SDL_Surface *pantalla = NULL;
	SDL_Event evento;
	int corriendo = 1;

	if (SDL_Init(SDL_INIT_VIDEO) < 0){
		printf("Error al iniciar SDL: %s\n", SDL_GetError());
		exit(1);
	}
	atexit(SDL_Quit);

	pantalla = SDL_SetVideoMode(ANCHO, ANCHO, 0, SDL_SWSURFACE);
	if (pantalla == NULL){
		printf("Error al inicializar el modo de video: '%s'\n", SDL_GetError());
		exit(1);
	}

	SDL_WM_SetCaption("Prueba de ratón, mueva el raton dentro de la ventana", NULL);

	while(corriendo){
		while(SDL_PollEvent(&evento)){
			switch(evento.type){
				/*
					Consulta el archivo:				
					/usr/include/SDL/SDL_mouse.h
					Allí se encuentra la declaración de los botones
					en forma de constantes
				*/
				case SDL_MOUSEBUTTONDOWN:
					printf("Botón de ratón '%s' pulsado en (%d,%d)\n",
						nombreBoton(evento.button.button), evento.button.x,
							evento.button.y);
					break;

				case SDL_MOUSEBUTTONUP:
					printf("Botón de ratón '%s' liberado en (%d,%d)\n",
						nombreBoton(evento.button.button), evento.button.x,
							evento.button.y);
					break;
				
				case SDL_MOUSEMOTION:
					printf("El ratón se movió %d,%d pixeles hasta (%d,%d)\n",
						evento.motion.xrel, evento.motion.yrel, evento.motion.x,
							evento.motion.y);
					break;

				case SDL_QUIT:
					corriendo = 0;
					break;

			}		
		}
	}
	
	return 0;
}
